package graph;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Set;
import java.util.TreeSet;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import back.Archivos;
import back.Juego;
import back.Tablero;


/*
 * Esta clase crea la ventana que pide el nombre al usuario y que carga 
 * el juego
 */
public class NuevoJuego extends JFrame{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public NuevoJuego(){
		pideNombre();
		
	}
	/*
	 * Pide el nombre al jugador, carga el tablero
	 * @return String nombre del usuario
	 */
	public String pideNombre(){
		setTitle("Nombre jugador");
		setLayout(null);
		setVisible(true);
		setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		setLocation(450, 400);
		setSize(new Dimension(400,140));
		
		JLabel label = new JLabel("Ingrese su nombre");
		label.setBounds(40, 20, 200, 30);
		
		final JTextField nombre = new JTextField("<nombre>");
		nombre.setBounds(200, 20, 130, 30);
		nombre.selectAll();
		
		JButton aceptar = new JButton("Aceptar");
		aceptar.setBounds(150, 60, 100, 30);
		aceptar.addActionListener(new ActionListener() {
		    	@Override
		    	public void actionPerformed(ActionEvent e) {
		    		try {
		    			File[] niveles;
						niveles = Archivos.cargarNiveles();
						Juego juego= new Juego(niveles);
						BufferedReader nivel=null;
						nivel= new BufferedReader(new FileReader(juego.getNivelActual()));
						Archivos.cargarTablero(juego, nombre.getText(),nivel,0);
						WindowGame game=new WindowGame(juego);
						game.setVisible(true);
						setVisible(false);	
					} catch (Exception e1) {
						String mensaje = "Problemas al cargar los niveles.";
						new MensajeFrame(mensaje);
					}
		    	
		    	}
		      });
		
		
		add(label);
		add(nombre);
		add(aceptar);
		return nombre.getName();
	}

		
}
